//package com.open.capacity.finance.service.impl;
//
//import com.github.pagehelper.PageInfo;
//import com.open.capacity.commons.CodeEnum;
//import com.open.capacity.commons.PageResult;
//import com.open.capacity.finance.dao.PzReportDao;
//import com.open.capacity.finance.dto.ZcfzbDto;
//import com.open.capacity.finance.service.PzService;
//import com.open.capacity.finance.service.Report2Service;
//import com.open.capacity.utils.BigDecimalUtil;
//import com.open.capacity.utils.DateUtil;
//import com.open.capacity.utils.StringUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.collections4.CollectionUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.util.Assert;
//
//import java.math.BigDecimal;
//import java.util.*;
//import java.util.concurrent.CompletableFuture;
//import java.util.stream.Collectors;
//
//@Slf4j
//@Service
//public class Report2ServiceImpl implements Report2Service {
//
//    @Autowired
//    private PzReportDao reportDao;
//
//    @Autowired
//    private ThreemergeReportDao threemergeReportDao;
//
//    @Autowired
//    private ThreemergeRecordDao threemergeRecordDao;
//
//
//    @Autowired
//    private CnpzReportDao cnpzReportDao;
//
//    @Autowired
//    private SysZtService ztService;
//
//    @Autowired
//    private BankMergeService bankMergeService;
//
//    @Autowired
//    private BankmergeRecordDao bankmergeRecordDao;
//
//
//    @Autowired
//    private ThreemergeConfirmService confirmService;
//
//    @Autowired
//    private BaseKjkmService kjkmService;
//
//    @Autowired
//    private BaseAjJbfgService jbfgService;
//
//    @Autowired
//    private ThreeTdhAjhzbService tdhAjhzbService;
//
//    @Autowired
//    private ThreeTdhAjmxbService tdhAjmxbService;
//
//    @Autowired
//    private PzService pzService;
//
//    @Autowired
//    private BankDayreportService bankDayreportService;
//
//
//    @Override
//    public ZcfzbDto zcfzb(Map<String, Object> params) {
//        String pzrq = params.get("pzrqEnd").toString();
//        String ztId = params.get("ztId").toString();
//        SysZt zt = ztService.findById(ztId);
//        List<KmyebDto> dtoList = reportDao.kmyeb1(params);
//        KmyebDto temp;
//        for (int i = 0; i < dtoList.size(); i++) {
//            if (dtoList.get(i).isMx == 1) {
//                temp = dtoList.get(i);
//                if (temp.yefx == 2) {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye).negate();
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).negate().add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.dlj)).subtract(BigDecimalUtil.getData(temp.jlj));
//                } else {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye);
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.jlj)).subtract(BigDecimalUtil.getData(temp.dlj));
//                }
//
//                temp.yefx1 = (temp.ncye == null || BigDecimal.ZERO.compareTo(temp.ncye) == 0 ? 0 : temp.yefx);
//                temp.yefx2 = (temp.qcye == null || BigDecimal.ZERO.compareTo(temp.qcye) == 0 ? 0 : temp.yefx);
//                temp.yefx3 = (temp.ye == null || BigDecimal.ZERO.compareTo(temp.ye) == 0 ? 0 : temp.yefx);
//            }
//        }
//
//        for (int i = 0; i < dtoList.size(); i++) {
//            KmyebDto parent = dtoList.get(i);
//            if (parent.isMx == 0) {
//                parent.ncye = BigDecimal.ZERO;
//                parent.qcye = BigDecimal.ZERO;
//                parent.jfs = BigDecimal.ZERO;
//                parent.dfs = BigDecimal.ZERO;
//                parent.jlj = BigDecimal.ZERO;
//                parent.dlj = BigDecimal.ZERO;
//                parent.ye = BigDecimal.ZERO;
//
//                calcParent(dtoList, dtoList.get(i), i);
//
//                if (parent.yefx.equals(2)) {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.dlj)).subtract(BigDecimalUtil.getData(parent.jlj));
//                } else {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.jlj)).subtract(BigDecimalUtil.getData(parent.dlj));
//                }
//                parent.yefx1 = (parent.ncye == null || BigDecimal.ZERO.compareTo(parent.ncye) == 0 ? 0 : parent.yefx);
//                parent.yefx2 = (parent.qcye == null || BigDecimal.ZERO.compareTo(parent.qcye) == 0 ? 0 : parent.yefx);
//                parent.yefx3 = (parent.ye == null || BigDecimal.ZERO.compareTo(parent.ye) == 0 ? 0 : parent.yefx);
//            }
//        }
//
//        //只显示选择的科目
//        if (params.containsKey("kjkmCodes_select") && params.containsKey("kjkmCodes")) {
//            String[] kjkmCodes = (String[]) params.get("kjkmCodes");
//            String[] kjkmCodes_select = (String[]) params.get("kjkmCodes_select");
//            if (kjkmCodes.length > kjkmCodes_select.length) {
//                List<String> selectKmCodes = Arrays.asList(kjkmCodes_select);
//                for (int i = 0; i < dtoList.size(); i++) {
//                    if (!selectKmCodes.contains(dtoList.get(i).getKjkmCode())) {
//                        dtoList.remove(i);
//                        i--;
//                    }
//                }
//            }
//        }
//
//        //资产合计
//        BigDecimal zc_total_ncye = BigDecimal.ZERO;
//        BigDecimal zc_total_ye = BigDecimal.ZERO;
//        //负债合计
//        BigDecimal fz_total_ncye = BigDecimal.ZERO;
//        BigDecimal fz_total_ye = BigDecimal.ZERO;
//        //净资产合计
//        BigDecimal jzc_total_ncye = BigDecimal.ZERO;
//        BigDecimal jzc_total_ye = BigDecimal.ZERO;
//
//
//        //4
//        BigDecimal total_ncye4 = BigDecimal.ZERO;
//        BigDecimal total_ye4 = BigDecimal.ZERO;
//        BigDecimal total_jlj4 = BigDecimal.ZERO;
//        BigDecimal total_dlj4 = BigDecimal.ZERO;
//
//        //5
//        BigDecimal total_ncye5 = BigDecimal.ZERO;
//        BigDecimal total_ye5 = BigDecimal.ZERO;
//        BigDecimal total_jlj5 = BigDecimal.ZERO;
//        BigDecimal total_dlj5 = BigDecimal.ZERO;
//
//        //总计
//        BigDecimal zj_total_ncye = BigDecimal.ZERO;
//        BigDecimal zj_total_ye = BigDecimal.ZERO;
//
//
//        ZcfzbDto result = new ZcfzbDto();
//        result.setPzrq(pzrq);
//        result.setZtName(zt.getCode() + ' ' + zt.getName());
//        result.setList(new ArrayList<>());
//        if (CollectionUtils.isNotEmpty(dtoList)) {
//            for (KmyebDto item : dtoList) {
//                if (item.getKjkmCode().startsWith("1")) {
//                    if (item.getYefx().equals(1)) {
//                        zc_total_ncye = zc_total_ncye.add(item.getNcye());
//                        zc_total_ye = zc_total_ye.add(item.getYe());
//                    } else {
//                        zc_total_ncye = zc_total_ncye.subtract(item.getNcye());
//                        zc_total_ye = zc_total_ye.subtract(item.getYe());
//                    }
//                } else if (item.getKjkmCode().startsWith("2")) {
//                    fz_total_ncye = fz_total_ncye.add(item.getNcye());
//                    fz_total_ye = fz_total_ye.add(item.getYe());
//
//                    zj_total_ncye = zj_total_ncye.add(item.getNcye());
//                    zj_total_ye = zj_total_ye.add(item.getYe());
//
//                } else if (item.getKjkmCode().startsWith("4")) {
//                    total_ncye4 = total_ncye4.add(item.getNcye());
//                    total_ye4 = total_ye4.add(item.getYe());
//                    total_jlj4 = total_ncye4.add(BigDecimalUtil.getData(item.getJlj()));
//                    total_dlj4 = total_ye4.add(BigDecimalUtil.getData(item.getDlj()));
//
//                } else if (item.getKjkmCode().startsWith("5")) {
//                    total_ncye5 = total_ncye5.add(item.getNcye());
//                    total_ye5 = total_ye5.add(item.getYe());
//                    total_jlj5 = total_ncye5.add(BigDecimalUtil.getData(item.getJlj()));
//                    total_dlj5 = total_ye5.add(BigDecimalUtil.getData(item.getDlj()));
//
//                } else if (item.getKjkmCode().startsWith("3")) {
//                    if (!item.getKjkmCode().equals("331")) {
//                        jzc_total_ncye = jzc_total_ncye.add(item.getNcye());
//                        jzc_total_ye = jzc_total_ye.add(item.getYe());
//                    }
//
//                    // zj_total_ncye = zj_total_ncye.add(item.getNcye());
//                    // zj_total_ye = zj_total_ye.add(item.getYe());
//                }
//
//                ZcfzbDto.ItemValue dto = new ZcfzbDto.ItemValue();
//                dto.setKjkmCode(item.getKjkmCode());
//                dto.setKjkmName(item.getKjkmName());
//                dto.setNcye(item.getNcye());
//                dto.setYe(item.getYe());
//                result.getList().add(dto);
//            }
//            boolean exists = false;
//            for (ZcfzbDto.ItemValue item : result.getList()) {
//                if (item.getKjkmCode().equals("331")) {
//                    exists = true;
//                    item.setNcye(item.getNcye().add(total_ncye4).subtract(total_ncye5));
//                    item.setYe(item.getYe().add(total_ye4).subtract(total_ye5));
//
//                    jzc_total_ncye = jzc_total_ncye.add(item.getNcye()).add(total_ncye4).subtract(total_ncye5);
//                    jzc_total_ye = jzc_total_ye.add(item.getYe());
//
//                    zj_total_ncye = zj_total_ncye.add(jzc_total_ncye);
//                    zj_total_ye = zj_total_ye.add(jzc_total_ye);
//                }
//            }
//            if (!exists) {
//                ZcfzbDto.ItemValue dto = new ZcfzbDto.ItemValue();
//                dto.setKjkmCode("331");
//                dto.setKjkmName("结余");
//                dto.setNcye(total_ncye4.subtract(total_ncye5));
//                dto.setYe(total_ye4.subtract(total_ye5));
//                result.getList().add(dto);
//            }
//            ZcfzbDto.ItemValue dto = new ZcfzbDto.ItemValue();
//            dto.setKjkmCode("zc_total");
//            dto.setKjkmName("资产合计");
//            dto.setNcye(zc_total_ncye);
//            dto.setYe(zc_total_ye);
//            result.getList().add(dto);
//
//            dto = new ZcfzbDto.ItemValue();
//            dto.setKjkmCode("fz_total");
//            dto.setKjkmName("负债合计");
//            dto.setNcye(fz_total_ncye);
//            dto.setYe(fz_total_ye);
//            result.getList().add(dto);
//
//            dto = new ZcfzbDto.ItemValue();
//            dto.setKjkmCode("jzc_total");
//            dto.setKjkmName("净资产合计");
//            dto.setNcye(jzc_total_ncye);
//            dto.setYe(jzc_total_ye);
//            result.getList().add(dto);
//
//            dto = new ZcfzbDto.ItemValue();
//            dto.setKjkmCode("zj_total");
//            dto.setKjkmName("总计");
//            dto.setNcye(zj_total_ncye);
//            dto.setYe(zj_total_ye);
//            result.getList().add(dto);
//
//        }
//
//
//        return result;
//    }
//
//    @Override
//    public SrzcbDto srzcb(Map<String, Object> params) {
//        String pzrq = params.get("pzrqEnd").toString();
//        String ztId = params.get("ztId").toString();
//        SysZt zt = ztService.findById(ztId);
//        List<KmyebDto> dtoList = reportDao.kmyeb1(params);
//        KmyebDto temp;
//        for (int i = 0; i < dtoList.size(); i++) {
//            if (dtoList.get(i).isMx == 1) {
//                temp = dtoList.get(i);
//                if (temp.yefx == 2) {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye).negate();
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).negate().add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.dlj)).subtract(BigDecimalUtil.getData(temp.jlj));
//                } else {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye);
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.jlj)).subtract(BigDecimalUtil.getData(temp.dlj));
//                }
//
//                temp.yefx1 = (temp.ncye == null || BigDecimal.ZERO.compareTo(temp.ncye) == 0 ? 0 : temp.yefx);
//                temp.yefx2 = (temp.qcye == null || BigDecimal.ZERO.compareTo(temp.qcye) == 0 ? 0 : temp.yefx);
//                temp.yefx3 = (temp.ye == null || BigDecimal.ZERO.compareTo(temp.ye) == 0 ? 0 : temp.yefx);
//            }
//        }
//
//        for (int i = 0; i < dtoList.size(); i++) {
//            KmyebDto parent = dtoList.get(i);
//            if (parent.isMx == 0) {
//                parent.ncye = BigDecimal.ZERO;
//                parent.qcye = BigDecimal.ZERO;
//                parent.jfs = BigDecimal.ZERO;
//                parent.dfs = BigDecimal.ZERO;
//                parent.jlj = BigDecimal.ZERO;
//                parent.dlj = BigDecimal.ZERO;
//                parent.ye = BigDecimal.ZERO;
//
//                calcParent(dtoList, dtoList.get(i), i);
//
//                if (parent.yefx.equals(2)) {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.dlj)).subtract(BigDecimalUtil.getData(parent.jlj));
//                } else {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.jlj)).subtract(BigDecimalUtil.getData(parent.dlj));
//                }
//                parent.yefx1 = (parent.ncye == null || BigDecimal.ZERO.compareTo(parent.ncye) == 0 ? 0 : parent.yefx);
//                parent.yefx2 = (parent.qcye == null || BigDecimal.ZERO.compareTo(parent.qcye) == 0 ? 0 : parent.yefx);
//                parent.yefx3 = (parent.ye == null || BigDecimal.ZERO.compareTo(parent.ye) == 0 ? 0 : parent.yefx);
//            }
//        }
//
//        //只显示选择的科目
//        if (params.containsKey("kjkmCodes_select") && params.containsKey("kjkmCodes")) {
//            String[] kjkmCodes = (String[]) params.get("kjkmCodes");
//            String[] kjkmCodes_select = (String[]) params.get("kjkmCodes_select");
//            if (kjkmCodes.length > kjkmCodes_select.length) {
//                List<String> selectKmCodes = Arrays.asList(kjkmCodes_select);
//                for (int i = 0; i < dtoList.size(); i++) {
//                    if (!selectKmCodes.contains(dtoList.get(i).getKjkmCode())) {
//                        dtoList.remove(i);
//                        i--;
//                    }
//                }
//            }
//        }
//
//        //收入合计
//        BigDecimal sr_total_byfs = BigDecimal.ZERO;
//        BigDecimal sr_total_bnlj = BigDecimal.ZERO;
//        //支出合计
//        BigDecimal zc_total_byfs = BigDecimal.ZERO;
//        BigDecimal zc_total_bnlj = BigDecimal.ZERO;
//        //结余合计
//        BigDecimal jy_total_byfs = BigDecimal.ZERO;
//        BigDecimal jy_total_bnlj = BigDecimal.ZERO;
//
//
//        SrzcbDto result = new SrzcbDto();
//        result.setPzrq(pzrq);
//        result.setZtName(zt.getCode() + ' ' + zt.getName());
//        result.setList(new ArrayList<>());
//        if (CollectionUtils.isNotEmpty(dtoList)) {
//            for (KmyebDto item : dtoList) {
//                if (item.getKjkmCode().startsWith("4")) {
//                    sr_total_byfs = sr_total_byfs.add(item.getNcye());
//                    sr_total_bnlj = sr_total_bnlj.add(item.getYe());
//
//                    jy_total_byfs = jy_total_byfs.add(item.getNcye());
//                    jy_total_bnlj = jy_total_bnlj.add(item.getYe());
//
//                } else if (item.getKjkmCode().startsWith("5")) {
//                    zc_total_byfs = zc_total_byfs.add(item.getNcye());
//                    zc_total_bnlj = zc_total_bnlj.add(item.getYe());
//
//                    jy_total_byfs = jy_total_byfs.subtract(item.getNcye());
//                    jy_total_bnlj = jy_total_bnlj.subtract(item.getYe());
//                }
//                SrzcbDto.ItemValue dto = new SrzcbDto.ItemValue();
//                dto.setKjkmCode(item.getKjkmCode());
//                dto.setKjkmName(item.getKjkmName());
//                dto.setByfs(BigDecimalUtil.getData(item.getJfs()).add(BigDecimalUtil.getData(item.getDfs())));
//                dto.setBnlj(BigDecimalUtil.getData(item.getJlj()).add(BigDecimalUtil.getData(item.getDlj())));
//                result.getList().add(dto);
//            }
//
//            SrzcbDto.ItemValue dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("sr_total");
//            dto.setKjkmName("收入合计");
//            dto.setByfs(sr_total_byfs);
//            dto.setBnlj(sr_total_bnlj);
//            result.getList().add(dto);
//
//            dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("zc_total");
//            dto.setKjkmName("支出合计");
//            dto.setByfs(zc_total_byfs);
//            dto.setBnlj(zc_total_bnlj);
//            result.getList().add(dto);
//
//            dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("jy_total");
//            dto.setKjkmName("结余合计");
//            dto.setByfs(jy_total_byfs);
//            dto.setBnlj(jy_total_bnlj);
//            result.getList().add(dto);
//        }
//        return result;
//    }
//
//    @Override
//    public SrzcbDto srzcb2(Map<String, Object> params) {
//        String pzrq = params.get("pzrqEnd").toString();
//        String ztId = params.get("ztId").toString();
//        SysZt zt = ztService.findById(ztId);
//        List<KmyebDto> dtoList = reportDao.kmyeb1(params);
//        KmyebDto temp;
//        for (int i = 0; i < dtoList.size(); i++) {
//            if (dtoList.get(i).isMx == 1) {
//                temp = dtoList.get(i);
//                if (temp.yefx == 2) {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye).negate();
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).negate().add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.dlj)).subtract(BigDecimalUtil.getData(temp.jlj));
//                } else {
//                    temp.ncye = BigDecimalUtil.getData(temp.ncye);
//                    temp.qcye = BigDecimalUtil.getData(temp.qcye).add(BigDecimalUtil.getData(temp.ncye));
//                    temp.ye = temp.ncye.add(BigDecimalUtil.getData(temp.jlj)).subtract(BigDecimalUtil.getData(temp.dlj));
//                }
//
//                temp.yefx1 = (temp.ncye == null || BigDecimal.ZERO.compareTo(temp.ncye) == 0 ? 0 : temp.yefx);
//                temp.yefx2 = (temp.qcye == null || BigDecimal.ZERO.compareTo(temp.qcye) == 0 ? 0 : temp.yefx);
//                temp.yefx3 = (temp.ye == null || BigDecimal.ZERO.compareTo(temp.ye) == 0 ? 0 : temp.yefx);
//            }
//        }
//
//        for (int i = 0; i < dtoList.size(); i++) {
//            KmyebDto parent = dtoList.get(i);
//            if (parent.isMx == 0) {
//                parent.ncye = BigDecimal.ZERO;
//                parent.qcye = BigDecimal.ZERO;
//                parent.jfs = BigDecimal.ZERO;
//                parent.dfs = BigDecimal.ZERO;
//                parent.jlj = BigDecimal.ZERO;
//                parent.dlj = BigDecimal.ZERO;
//                parent.ye = BigDecimal.ZERO;
//
//                calcParent(dtoList, dtoList.get(i), i);
//
//                if (parent.yefx.equals(2)) {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.dlj)).subtract(BigDecimalUtil.getData(parent.jlj));
//                } else {
//                    parent.ye = parent.ncye.add(BigDecimalUtil.getData(parent.jlj)).subtract(BigDecimalUtil.getData(parent.dlj));
//                }
//                parent.yefx1 = (parent.ncye == null || BigDecimal.ZERO.compareTo(parent.ncye) == 0 ? 0 : parent.yefx);
//                parent.yefx2 = (parent.qcye == null || BigDecimal.ZERO.compareTo(parent.qcye) == 0 ? 0 : parent.yefx);
//                parent.yefx3 = (parent.ye == null || BigDecimal.ZERO.compareTo(parent.ye) == 0 ? 0 : parent.yefx);
//            }
//        }
//
//        //只显示选择的科目
//        if (params.containsKey("kjkmCodes_select") && params.containsKey("kjkmCodes")) {
//            String[] kjkmCodes = (String[]) params.get("kjkmCodes");
//            String[] kjkmCodes_select = (String[]) params.get("kjkmCodes_select");
//            if (kjkmCodes.length > kjkmCodes_select.length) {
//                List<String> selectKmCodes = Arrays.asList(kjkmCodes_select);
//                for (int i = 0; i < dtoList.size(); i++) {
//                    if (!selectKmCodes.contains(dtoList.get(i).getKjkmCode())) {
//                        dtoList.remove(i);
//                        i--;
//                    }
//                }
//            }
//        }
//
//        //收入合计
//        BigDecimal sr_total_byfs = BigDecimal.ZERO;
//        BigDecimal sr_total_bnlj = BigDecimal.ZERO;
//        //支出合计
//        BigDecimal zc_total_byfs = BigDecimal.ZERO;
//        BigDecimal zc_total_bnlj = BigDecimal.ZERO;
//        /*//年初结转
//        BigDecimal ncjz_byfs = BigDecimal.ZERO;
//        BigDecimal ncjz_bnlj = BigDecimal.ZERO;
//        //年初结余
//        BigDecimal ncjy_byfs = BigDecimal.ZERO;
//        BigDecimal ncjy_bnlj = BigDecimal.ZERO;
//        //年末结转
//        BigDecimal nmjz_byfs = BigDecimal.ZERO;
//        BigDecimal nmjz_bnlj = BigDecimal.ZERO;*/
//        //结余合计
//        BigDecimal jy_total_byfs = BigDecimal.ZERO;
//        BigDecimal jy_total_bnlj = BigDecimal.ZERO;
//
//
//        SrzcbDto result = new SrzcbDto();
//        result.setPzrq(pzrq);
//        result.setZtName(zt.getCode() + ' ' + zt.getName());
//        result.setList(new ArrayList<>());
//        if (CollectionUtils.isNotEmpty(dtoList)) {
//            for (KmyebDto item : dtoList) {
//                if (item.getKjkmCode().startsWith("4")) {
//                    sr_total_byfs = sr_total_byfs.add(item.getNcye());
//                    sr_total_bnlj = sr_total_bnlj.add(item.getYe());
//
//                    jy_total_byfs = jy_total_byfs.add(item.getNcye());
//                    jy_total_bnlj = jy_total_bnlj.add(item.getYe());
//
//                } else if (item.getKjkmCode().startsWith("5")) {
//                    zc_total_byfs = zc_total_byfs.add(item.getNcye());
//                    zc_total_bnlj = zc_total_bnlj.add(item.getYe());
//
//                    jy_total_byfs = jy_total_byfs.subtract(item.getNcye());
//                    jy_total_bnlj = jy_total_bnlj.subtract(item.getYe());
//                }
//                SrzcbDto.ItemValue dto = new SrzcbDto.ItemValue();
//                dto.setKjkmCode(item.getKjkmCode());
//                dto.setKjkmName(item.getKjkmName());
//                dto.setByfs(BigDecimalUtil.getData(item.getJfs()).add(BigDecimalUtil.getData(item.getDfs())));
//                dto.setBnlj(BigDecimalUtil.getData(item.getJlj()).add(BigDecimalUtil.getData(item.getDlj())));
//                result.getList().add(dto);
//            }
//
//            SrzcbDto.ItemValue dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("sr_total");
//            dto.setKjkmName("收入合计");
//            dto.setByfs(sr_total_byfs);
//            dto.setBnlj(sr_total_bnlj);
//            result.getList().add(dto);
//
//            dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("zc_total");
//            dto.setKjkmName("支出合计");
//            dto.setByfs(zc_total_byfs);
//            dto.setBnlj(zc_total_bnlj);
//            result.getList().add(dto);
//
//            dto.setKjkmCode("srzc_diff");
//            dto.setKjkmName("收入支出差额");
//            BigDecimal srzc_byfs = sr_total_byfs.subtract(zc_total_byfs);
//            BigDecimal srzc_bnlj = sr_total_bnlj.subtract(zc_total_bnlj);
//            dto.setByfs(srzc_byfs);
//            dto.setBnlj(srzc_bnlj);
//            result.getList().add(dto);
//
//            /*dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("ncjy_total");
//            dto.setKjkmName("年初资金结余");
//            dto.setByfs(ncjy_byfs);
//            dto.setBnlj(ncjy_bnlj);
//            result.getList().add(dto);*/
//
//            /*dto = new SrzcbDto.ItemValue();
//            dto.setKjkmCode("nmjy_total");
//            dto.setKjkmName("年末资金结余");
//            dto.setByfs(jy_total_byfs);
//            dto.setBnlj(jy_total_bnlj);
//            result.getList().add(dto);*/
//        }
//        return result;
//    }
//
//    /**
//     * 余额调节表
//     *
//     * @param params
//     * @return
//     */
//    @Override
//    public List<YetjbDto> yetjb(Map<String, Object> params) {
//        List<YetjbDto> result = new ArrayList<>();
//        String kjkmCode = params.get("kjkmCode").toString();
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        Integer kjqj = Integer.parseInt(params.get("kjqj").toString());
//        String pzrqStart = DateUtil.getFirstDayOfMonth(kjnd, kjqj);
//        String pzrqEnd = DateUtil.getLastDayOfMonth(kjnd, kjqj);
//        Integer isShowMx = Integer.parseInt(params.get("isShowMx").toString());
//        params.put("pzrqStart", pzrqStart);
//        params.put("pzrqEnd", pzrqEnd);
//
//        //出纳余额
//        List<CnyebDto> cnyeList = cnpzReportDao.cnyeb01(params);
//        CnyebDto currentCnye = cnyeList.stream().filter(t -> t.kjkmCode.equals(kjkmCode)).findFirst().get();
//        if (currentCnye.yefx.equals(2)) {
//            currentCnye.ye = BigDecimalUtil.getData(currentCnye.ncye).add(BigDecimalUtil.getData(currentCnye.dlj)).subtract(BigDecimalUtil.getData(currentCnye.jlj));
//        } else {
//            currentCnye.ye = BigDecimalUtil.getData(currentCnye.ncye).add(BigDecimalUtil.getData(currentCnye.jlj)).subtract(BigDecimalUtil.getData(currentCnye.dlj));
//        }
//        BankMergeImportDto bankYe = bankMergeService.findBankYe(params);
//
//        params.put("isRj", 1);
//        params.put("isQc", 0);
//        params.put("isMerge", 0);
//        List<Cnpz> cnpzNoMerges = bankmergeRecordDao.findCnpz(params);
//
//
//        BigDecimal ye1, ye2;
//        //单位账面余额+对账单余额
//        YetjbDto item1 = new YetjbDto();
//        item1.setSort(1);
//        item1.setType(1);
//        item1.setItem1("单位账面余额");
//        item1.setYe1(currentCnye.getYe());
//        item1.setItem2("对账单余额");
//        item1.setYe2(bankYe.getYe());
//        result.add(item1);
//
//        //银行收单位未收+单位收银行未收
//        YetjbDto item2 = new YetjbDto();
//        item2.setSort(2);
//        item2.setType(2);
//        item2.setItem1("银行收单位未收");
//        ye1 = bankYe.getAlreadyInList() == null ? BigDecimal.ZERO : bankYe.getAlreadyInList().stream().filter(t -> t.getD().compareTo(BigDecimal.ZERO) > 0).map(BankMergeImportDto.AlreadyIn::getD).reduce(BigDecimal.ZERO, BigDecimal::add);
//        item2.setYe1(ye1);
//        item2.setItem2("单位收银行未收");
//        item2.setYe2(BigDecimal.ZERO);
//        result.add(item2);
//
//
//        for (Cnpz pz : cnpzNoMerges) {
//            if (pz.getD().compareTo(BigDecimal.ZERO) > 0) {
//                YetjbDto temp = new YetjbDto();
//                temp.setSort(3);
//                temp.setType(3);
//                temp.setItem1("");
//                temp.setYe1(BigDecimal.ZERO);
//                temp.setItem2(DateUtil.formatDate(pz.getPzrq()) + "-" + pz.getPzh());
//                temp.setYe2(pz.getD());
//                item2.setYe2(item2.getYe2().add(pz.getD()));
//                if (isShowMx == 1) {
//                    result.add(temp);
//                }
//            }
//        }
//
//        if (bankYe != null && CollectionUtils.isNotEmpty(bankYe.getAlreadyInList())) {
//            for (BankMergeImportDto.AlreadyIn bank : bankYe.getAlreadyInList()) {
//                if (bank.getD().compareTo(BigDecimal.ZERO) > 0) {
//                    YetjbDto temp = new YetjbDto();
//                    temp.setSort(4);
//                    temp.setType(4);
//                    temp.setItem1(bank.getName());
//                    temp.setYe1(bank.getD());
//                    temp.setItem2("");
//                    temp.setYe2(BigDecimal.ZERO);
//                    if (isShowMx == 1) {
//                        result.add(temp);
//                    }
//                }
//            }
//        }
//
//
//        //银行付单位未收+单位付银行未付
//        YetjbDto item3 = new YetjbDto();
//        item3.setSort(5);
//        item3.setType(5);
//        item3.setItem1("银行付单位未付");
//        ye1 = bankYe.getAlreadyInList() == null ? BigDecimal.ZERO : bankYe.getAlreadyInList().stream().filter(t -> t.getJ().compareTo(BigDecimal.ZERO) > 0).map(BankMergeImportDto.AlreadyIn::getJ).reduce(BigDecimal.ZERO, BigDecimal::add);
//        item3.setYe1(ye1);
//        item3.setItem2("单位付银行未付");
//        item3.setYe2(BigDecimal.ZERO);
//        result.add(item3);
//
//        for (Cnpz pz : cnpzNoMerges) {
//            if (pz.getJ().compareTo(BigDecimal.ZERO) > 0) {
//                YetjbDto temp = new YetjbDto();
//                temp.setSort(6);
//                temp.setType(6);
//                temp.setItem1("");
//                temp.setYe1(BigDecimal.ZERO);
//                temp.setItem2(DateUtil.formatDate(pz.getPzrq()) + "-" + pz.getPzh());
//                temp.setYe2(pz.getJ());
//                item3.setYe2(item3.getYe2().add(pz.getJ()));
//                if (isShowMx == 1) {
//                    result.add(temp);
//                }
//            }
//        }
//        if (bankYe != null && CollectionUtils.isNotEmpty(bankYe.getAlreadyInList())) {
//            for (BankMergeImportDto.AlreadyIn bank : bankYe.getAlreadyInList()) {
//                if (bank.getJ().compareTo(BigDecimal.ZERO) > 0) {
//                    YetjbDto temp = new YetjbDto();
//                    temp.setSort(7);
//                    temp.setType(7);
//                    temp.setItem1(bank.getName());
//                    temp.setYe1(bank.getJ());
//                    temp.setItem2("");
//                    temp.setYe2(BigDecimal.ZERO);
//                    if (isShowMx == 1) {
//                        result.add(temp);
//                    }
//                }
//            }
//        }
//
//
//        //调节后余额
//        YetjbDto item4 = new YetjbDto();
//        item4.setSort(8);
//        item4.setType(8);
//        item4.setItem1("调节后余额");
//        ye1 = BigDecimalUtil.getData(item1.getYe1()).add(BigDecimalUtil.getData(item2.getYe1())).add(BigDecimalUtil.getData(item3.getYe1()));
//        item4.setYe1(ye1);
//        item4.setItem2("调节后余额");
//        ye2 = BigDecimalUtil.getData(item1.getYe2()).add(BigDecimalUtil.getData(item2.getYe2())).add(BigDecimalUtil.getData(item3.getYe2()));
//        item4.setYe2(ye2);
//        result.add(item4);
//
//        return result;
//    }
//
//    /**
//     * 递归统计父级数据
//     */
//    private void calcParent(List<KmyebDto> dtoList, KmyebDto parent, int start) {
//        KmyebDto temp;
//        for (int i = start + 1; i < dtoList.size(); i++) {
//            start++;
//            temp = dtoList.get(i);
//            if (temp.kjkmCode.startsWith(parent.kjkmCode)) {
//                if (temp.isMx == 1) {
//                    if (parent.yefx.equals(temp.yefx)) {
//                        parent.ncye = BigDecimalUtil.getData(parent.ncye).add(BigDecimalUtil.getData(temp.ncye));
//                        parent.qcye = BigDecimalUtil.getData(parent.qcye).add(BigDecimalUtil.getData(temp.qcye));
//                    } else {
//                        parent.ncye = BigDecimalUtil.getData(parent.ncye).add(BigDecimalUtil.getData(temp.ncye).negate());
//                        parent.qcye = BigDecimalUtil.getData(parent.qcye).add(BigDecimalUtil.getData(temp.qcye).negate());
//                    }
//
//                    parent.jfs = BigDecimalUtil.getData(parent.jfs).add(BigDecimalUtil.getData(temp.jfs));
//                    parent.dfs = BigDecimalUtil.getData(parent.dfs).add(BigDecimalUtil.getData(temp.dfs));
//                    parent.jlj = BigDecimalUtil.getData(parent.jlj).add(BigDecimalUtil.getData(temp.jlj));
//                    parent.dlj = BigDecimalUtil.getData(parent.dlj).add(BigDecimalUtil.getData(temp.dlj));
//                    parent.ye = BigDecimalUtil.getData(parent.ye).add(BigDecimalUtil.getData(temp.ye));
//                } else {
//                    calcParent(dtoList, temp, i);
//                }
//            }
//        }
//    }
//
//
//    @Override
//    public List<AkyebDto> ajyeb(SearchDto searchDto) {
//        String companyId = searchDto.companyId;
//        String ztId = searchDto.ztId;
//        String ajCode = searchDto.ajCode;
//        Integer rejectZero = searchDto.rejectZero;
//
//        Map<String, Object> params = new HashMap<>();
//        params.put("companyId", companyId);
//        params.put("ztId", ztId);
//
////        if(StringUtil.isNotEmpty(searchDto.pzrqStart)) {
////            params.put("pzrqStart", searchDto.pzrqStart);
////        }
//        if (StringUtil.isNotEmpty(searchDto.pzrqEnd)) {
//            params.put("pzrqEnd", searchDto.pzrqEnd);
//        }
//
//        if (ajCode != null) {
//            params.put("ajCode", ajCode);
//        }
//        if (rejectZero != null && rejectZero == 1) {
//            params.put("rejectZero", 1);
//        }
//        List<AkyebDto> result = new ArrayList<>();
//
//        if (searchDto.getCondition() != null && searchDto.getCondition().size() > 0) {
//            String sql = " (";
//            int _size = 0;
//            for (int i = 0; i < searchDto.getCondition().size(); i++) {
//                SearchDto.SearchItem item = searchDto.getCondition().get(i);
//                if (StringUtil.isNotEmpty(item.getItemCode()) && StringUtil.isNotEmpty(item.getCompare()) && StringUtil.isNotEmpty(item.getText())) {
//                    _size++;
//                    if (i > 0) {
//                        sql += " " + searchDto.getCondition().get(i - 1).getOperate() + " ";
//                    }
//                    if (item.getCompare().contains("like")) {
//                        sql += (item.getItemCode() + " " + item.getCompare() + " '%" + item.getText() + "%' ");
//                    } else {
//                        sql += (item.getItemCode() + " " + item.getCompare() + " '" + item.getText() + "' ");
//                    }
//                }
//            }
//            sql += " )";
//            if (_size > 0) {
//                params.put("condition", sql);
//            }
//        }
//
//        List<AkyebDto> dtoList = reportDao.ajyeb(params);
//        TreeMap<String, List<AkyebDto>> tempMap = dtoList.stream().filter(t -> StringUtil.isNotEmpty(t.getAjName())).collect(Collectors.groupingBy(item -> item.getAjName(), TreeMap::new, Collectors.toList()));
//
//        for (Map.Entry entry_item : tempMap.entrySet()) {
//            boolean already = false;
//            AkyebDto item = new AkyebDto();
//            BigDecimal _j = BigDecimal.ZERO, _d = BigDecimal.ZERO;
//            List<AkyebDto> list_item = (List) entry_item.getValue();
//
//            for (int i = 0; i < list_item.size(); i++) {
//                if (list_item.get(i).getIsQc() == 1) {
//                    if (!already) {
//                        _j = _j.add(list_item.get(i).getJ());
//                        _d = _d.add(list_item.get(i).getD());
//                        already = true;
//                    }
//                } else {
//                    _j = _j.add(list_item.get(i).getJ());
//                    _d = _d.add(list_item.get(i).getD());
//                    already = true;
//                }
//            }
//            item.setAjName(entry_item.getKey().toString());
//            item.setJ(_j);
//            item.setD(_d);
//            item.setYe(_d.subtract(_j));
//            result.add(item);
//        }
//
//        if (rejectZero != null && rejectZero == 1) {
//            for (int i = 0; i < result.size(); i++) {
//                if (result.get(i).getYe().compareTo(BigDecimal.ZERO) == 0
////                        && dtoList.get(i).getJ().compareTo(BigDecimal.ZERO) == 0
////                        && dtoList.get(i).getD().compareTo(BigDecimal.ZERO) == 0
//                ) {
//                    result.remove(i);
//                    i--;
//                }
//            }
//        }
//
//        return result;
//    }
//
//    @Override
//    public PageResult<ThreeMergeAjDataDto> ajyeb_three(Map<String, Object> params) {
//        String companyId = params.get("companyId").toString();
//        String ztId = params.get("ztId").toString();
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        Integer kjqj = Integer.parseInt(params.get("kjqj").toString());
//
//        Integer page = Integer.parseInt(params.get("page").toString());
//        Integer limit = Integer.parseInt(params.get("limit").toString());
//        Integer isMerge = params.containsKey("isMerge") ? Integer.parseInt(params.get("isMerge").toString()) : -1;
//        Integer isExcute = params.containsKey("excuteStatus") ? Integer.parseInt(params.get("excuteStatus").toString()) : -1;
//
//        params.put("pzrqStart", DateUtil.getFirstDayOfMonth(kjnd, kjqj));
//        params.put("pzrqEnd", DateUtil.getLastDayOfMonth(kjnd, kjqj));
//        params.put("ny", kjnd + (kjqj < 10 ? "0" + kjqj : kjqj).toString());
//
//        params.remove("kjqj");
//
//        List<ThreeTdhAjmxb> tdhList = tdhAjmxbService.findAll(params);
//        List<ThreeMergeAjDataDto> pzList = pzService.findAjMonthList(params);
//        List<ThreemergeConfirm> confirmList = confirmService.findAll(params);
//
//        List<ThreeMergeAjDataDto> list = new ArrayList<>();
//        ThreeMergeAjDataDto item;
//        if (CollectionUtils.isNotEmpty(tdhList)) {
//            for (ThreeTdhAjmxb tdh : tdhList) {
//                Optional<ThreeMergeAjDataDto> first = list.stream().filter(t -> t.getAjName().equals(tdh.getAh())).findFirst();
//                if (!first.isPresent()) {
//                    item = new ThreeMergeAjDataDto();
//                    item.setKjnd(kjnd);
//                    item.setKjqj(kjqj);
//                    item.setAjName(tdh.getAh());
//                    item.setTdhSr(tdh.getSrje());
//                    item.setTdhZc(tdh.getZcje());
//                    item.setTdhYe(tdh.getYmye());
//                    item.setCwYe(BigDecimal.ZERO);
//                    list.add(item);
//                }
//            }
//        }
//        if (CollectionUtils.isNotEmpty(pzList)) {
//            for (ThreeMergeAjDataDto pz : pzList) {
//                Optional<ThreeMergeAjDataDto> first = list.stream().filter(t -> t.getAjName().equals(pz.getAjName())).findFirst();
//                if (!first.isPresent()) {
//                    item = new ThreeMergeAjDataDto();
//                    item.setKjnd(kjnd);
//                    item.setKjqj(kjqj);
//                    item.setAjName(pz.getAjName());
//                    item.setCwSr(pz.getCwSr());
//                    item.setCwZc(pz.getCwZc());
//                    item.setCwYe(pz.getCwYe());
//                    item.setTdhYe(BigDecimal.ZERO);
//                    item.setIsMerge(0);
//                    list.add(item);
//                } else {
//                    item = first.get();
//                    item.setKjnd(kjnd);
//                    item.setKjqj(kjqj);
//                    item.setCwSr(pz.getCwSr());
//                    item.setCwZc(pz.getCwZc());
//                    item.setCwYe(pz.getCwYe());
//                }
//            }
//        }
//
//        list.sort(Comparator.comparing(ThreeMergeAjDataDto::getAjName, Comparator.nullsLast(String::compareTo)));
//
//        List<ThreeMergeAjDataDto> resultList = list;
//        list.forEach(t -> {
//            if (t.getIsMerge() == null) {
//                if ((t.getTdhYe() != null && t.getCwYe() != null && t.getTdhYe().compareTo(t.getCwYe()) == 0)
//                        && (t.getTdhSr() == null || t.getCwSr() == null || t.getTdhSr().compareTo(t.getCwSr()) == 0)
//                        && (t.getTdhZc() == null || t.getCwZc() == null || t.getTdhZc().compareTo(t.getCwZc()) == 0)) {
//                    t.setIsMerge(1);
//                } else {
//                    t.setIsMerge(0);
//                }
//            }
//            for (ThreemergeConfirm c : confirmList) {
//                int count = 0;
//                if ((c.getAjName() + c.getTdhLsh() + c.getCwPzid() + c.getBankid()).equals(t.getAjName() + t.getTdhLsh() + t.getCwPzid() + t.getBankid())) {
//                    if (c.getCategory() == 9) {
//                        if (++count >= 2) {
//                            break;
//                        }
//                    } else if (c.getCategory() != 9) {
//                        t.setCreateUsername(c.getCreateUsername());
//                        t.setIsExcute(c.getCategory());
//                        if (++count >= 2) {
//                            break;
//                        }
//                    }
//                }
//            }
//            if (t.getIsExcute() == null) {
//                t.setIsExcute(0);
//            }
//        });
//
//        if (isMerge > -1) {
//            resultList = resultList.stream().filter(t -> t.getIsMerge().equals(isMerge)).collect(Collectors.toList());
//        }
//        if (isExcute > -1) {
//            resultList = resultList.stream().filter(t -> t.getIsExcute().equals(isExcute)).collect(Collectors.toList());
//        }
//
//        int startIndex = (page - 1) * limit;
//        int endIndex = page * limit < resultList.size() ? page * limit : resultList.size();
//        List<ThreeMergeAjDataDto> pageList = resultList.subList(startIndex, endIndex);
//
//
//        PageInfo<ThreeMergeAjDataDto> pageInfo = new PageInfo(pageList);
//        pageInfo.setTotal(resultList.size());
//        return PageResult.<ThreeMergeAjDataDto>builder().data(pageInfo.getList()).resp_code(CodeEnum.SUCCESS.getCode()).count(pageInfo.getTotal()).build();
//    }
//
//    @Override
//    public List<SlmxzDto> ajmxz(SearchDto searchDto) {
//        String companyId = searchDto.companyId;
//        String ztId = searchDto.ztId;
//        String pzrqStart = searchDto.pzrqStart;
//        String pzrqEnd = searchDto.pzrqEnd;
//        String ajCode = searchDto.ajCode;
//
//        Map<String, Object> params = new HashMap<>();
//        params.put("companyId", companyId);
//        params.put("ztId", ztId);
//        if (pzrqStart != null) {
//            params.put("pzrqStart", pzrqStart);
//        }
//        if (pzrqEnd != null) {
//            params.put("pzrqEnd", pzrqEnd);
//        }
//        if (ajCode != null) {
//            params.put("ajCode", ajCode);
//        }
//
//        if (searchDto.getCondition() != null && searchDto.getCondition().size() > 0) {
//            String sql = " (";
//            int _size = 0;
//            for (int i = 0; i < searchDto.getCondition().size(); i++) {
//                SearchDto.SearchItem item = searchDto.getCondition().get(i);
//                if (StringUtil.isNotEmpty(item.getItemCode()) && StringUtil.isNotEmpty(item.getCompare()) && StringUtil.isNotEmpty(item.getText())) {
//                    _size++;
//                    if (i > 0) {
//                        sql += " " + searchDto.getCondition().get(i - 1).getOperate() + " ";
//                    }
//                    if (item.getCompare().contains("like")) {
//                        sql += (item.getItemCode() + " " + item.getCompare() + " '%" + item.getText() + "%' ");
//                    } else {
//                        sql += (item.getItemCode() + " " + item.getCompare() + " '" + item.getText() + "' ");
//                    }
//                }
//            }
//            sql += " )";
//            if (_size > 0) {
//                params.put("condition", sql);
//            }
//        }
//
//        List<SlmxzDto> dtoList = reportDao.ajmxz(params);
//
//        Collections.sort(dtoList);
//
//        Integer yefx = 2;
//
//        //计算余额
//        calcFzxYe(dtoList, yefx);
//        return dtoList;
//    }
//
//    @Override
//    public PageResult<ThreeMergeAjDataDto> ajmxz_three_sr(Map<String, Object> params) {
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        Integer kjqj = Integer.parseInt(params.get("kjqj").toString());
//        Integer page = Integer.parseInt(params.get("page").toString());
//        Integer limit = Integer.parseInt(params.get("limit").toString());
//        Integer isMerge = params.containsKey("isMerge") ? Integer.parseInt(params.get("isMerge").toString()) : -1;
//        String cbrr = params.containsKey("cbrr") ? params.get("cbrr").toString() : "";
//        Integer isExcute = params.containsKey("excuteStatus") ? Integer.parseInt(params.get("excuteStatus").toString()) : -1;
//
//        // String pzrqStart = kjnd + "-01-01"; //年初还是月初？
//        String pzrqStart = DateUtil.getFirstDayOfMonth(kjnd, kjqj);
//        String pzrqEnd = DateUtil.getLastDayOfMonth(kjnd, kjqj);
//
//        params.put("pzrqStart", pzrqStart);
//        params.put("pzrqEnd", pzrqEnd);
//
//        params.put("jyrqStart", pzrqStart.replaceAll("-", ""));
//        params.put("jyrqEnd", pzrqEnd.replaceAll("-", ""));
//
//        //params.remove("ajName"); //TODO 要不要查多个？
//
//        List<ThreeMergeAjDataDto> finalTdhList = new ArrayList<>();
//        List<ThreeMergeAjDataDto> finalPzList = new ArrayList<>();
//        List<ThreeMergeAjDataDto> finalBankList = new ArrayList<>();
//        List<ThreemergeRecord> mergeRecordList = new ArrayList<>();
//        List<ThreemergeConfirm> confirmList = new ArrayList<>();
//
//
//        if (StringUtil.isNotEmpty(cbrr)) {
//            List<BaseAjJbfg> cbrrList = jbfgService.findByCbrr(cbrr);
//            Assert.isTrue(CollectionUtils.isNotEmpty(cbrrList), "该经办法官没有查询到数据");
//        }
//
//        CompletableFuture<Boolean> tdhFuture = CompletableFuture.supplyAsync(() -> finalTdhList.addAll(threemergeReportDao.findTdhList(params).stream().filter(a -> a.getTdhSr().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList())));
//        CompletableFuture<Boolean> pzFuture = CompletableFuture.supplyAsync(() -> finalPzList.addAll(threemergeReportDao.findPzList(params).stream().filter(a -> a.getCwSr().compareTo(BigDecimal.ZERO) != 0).collect(Collectors.toList())));
//
//
//        CompletableFuture<Boolean> bankTure = CompletableFuture.supplyAsync(() -> finalBankList.addAll(threemergeReportDao.findBankList(params).stream().filter(a -> a.getBankSr().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList())));
//
//        CompletableFuture<Boolean> mergeRecordTure = CompletableFuture.supplyAsync(() -> mergeRecordList.addAll(threemergeRecordDao.findAll(params)));
//        CompletableFuture<Boolean> confirmTure = CompletableFuture.supplyAsync(() -> confirmList.addAll(confirmService.findAll(params)));
//
//        CompletableFuture.allOf(tdhFuture, pzFuture, bankTure, mergeRecordTure, confirmTure).join();
//
//        //补充已经匹配，但是银行的记录的案号不标准导致查不出来的问题
//        finalTdhList.forEach(t -> {
//            Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getLsh().equals(t.getTdhLsh())).findFirst();
//            if (mergeRecord.isPresent()) {
//                ThreeMergeAjDataDto newItem;
//                Optional<ThreeMergeAjDataDto> first = finalBankList.stream().filter(p -> p.getBankid().equals(mergeRecord.get().getBankid())).findFirst();
//                if (first.isPresent()) {
//
//                } else {
//                    BankDayreportDetail bankDayreportDetail = bankDayreportService.findById(mergeRecord.get().getBankid());
//                    newItem = new ThreeMergeAjDataDto();
//                    newItem.setAjName(t.getAjName());
//                    newItem.setBankid(bankDayreportDetail.getId());
//                    newItem.setBankSr(bankDayreportDetail.getDealMoney());
//                    newItem.setBankZc(BigDecimal.ZERO);
//                    newItem.setBankPzrq(bankDayreportDetail.getJyrq());
//                    finalBankList.add(newItem);
//                }
//            }
//        });
//
//        finalBankList.forEach(t -> {
//            int merge = 0;
//            Optional<ThreeMergeAjDataDto> pz = finalPzList.stream().filter(p -> p.getCwFlag() == null && StringUtil.isNotEmpty(p.getAjName()) && p.getAjName().equals(t.getAjName()) && p.getCwSr() != null && p.getCwSr().compareTo(t.getBankSr()) == 0).findFirst();
//            if (pz.isPresent()) {
//                t.setCwPzid(pz.get().getCwPzid());
//                t.setCwPzrq(pz.get().getCwPzrq());
//                t.setCwSr(pz.get().getCwSr());
//                t.setCwZc(pz.get().getCwZc());
//                pz.get().setCwFlag(1);
//                merge++;
//            }
//            //银行记录和通达海记录匹配过，这里处理非税手工勾销的场景
//            Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getBankid().equals(t.getBankid())).findFirst();
//            if (mergeRecord.isPresent()) {
//                merge++;
//                Optional<ThreeMergeAjDataDto> tdh = finalTdhList.stream().filter(p -> p.getTdhLsh().equals(mergeRecord.get().getLsh())).findFirst();
//                if (tdh.isPresent()) {
//                    t.setTdhLsh(tdh.get().getTdhLsh());
//                    t.setTdhPzrq(tdh.get().getTdhPzrq());
//                    t.setTdhSr(tdh.get().getTdhSr());
//                    t.setTdhZc(tdh.get().getTdhZc());
//                    tdh.get().setTdhFlag(1);
//                    if (mergeRecord.get().getStatus() != null && mergeRecord.get().getStatus().equals(2)) {
//                        t.setRemark(mergeRecord.get().getRemark());
//                    }
//                }
//            } else {
//                Optional<ThreeMergeAjDataDto> tdh = finalTdhList.stream().filter(p -> p.getBankFlag() == null && p.getAjName().equals(t.getAjName()) && p.getTdhSr().compareTo(t.getBankSr()) == 0).findFirst();
//                if (tdh.isPresent()) {
//                    t.setTdhLsh(tdh.get().getTdhLsh());
//                    t.setTdhPzrq(tdh.get().getTdhPzrq());
//                    t.setTdhSr(tdh.get().getTdhSr());
//                    t.setTdhZc(tdh.get().getTdhZc());
//                    tdh.get().setTdhFlag(1);
//                    merge++;
//                }
//            }
//            t.setIsMerge(merge);
//        });
//        //补充凭证额外记录
//        finalPzList.stream().filter(a -> a.getCwFlag() == null).forEach(t -> {
//            int merge = 0;
//            Optional<ThreeMergeAjDataDto> tdh = finalTdhList.stream().filter(p -> p.getAjName().equals(t.getAjName()) && p.getTdhSr().compareTo(t.getCwSr()) == 0).findFirst();
//            if (tdh.isPresent()) {
//                t.setTdhLsh(tdh.get().getTdhLsh());
//                t.setTdhPzrq(tdh.get().getTdhPzrq());
//                t.setTdhSr(tdh.get().getTdhSr());
//                t.setTdhZc(tdh.get().getTdhZc());
//                tdh.get().setTdhFlag(1);
//                merge++;
//            }
////            else {
////                //银行记录和通达海记录匹配过，这里处理非税手工勾销的场景
////                Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getBankid().equals(t.getBankid())).findFirst();
////                if (mergeRecord.isPresent()) {
////                    merge++;
////                }
////            }
//            t.setIsMerge(merge);
//            finalBankList.add(t);
//        });
//
//        //补充通达海额外记录
//        finalTdhList.stream().filter(a -> a.getTdhFlag() == null).forEach(t -> {
//            // t.setAjName(ajName);
//            t.setIsMerge(0);
//            finalBankList.add(t);
//        });
//
//        finalBankList.forEach(t -> {
//            for (ThreemergeConfirm c : confirmList) {
//                if ((c.getAjName() + c.getTdhLsh() + c.getCwPzid() + c.getBankid()).equals(t.getAjName() + t.getTdhLsh() + t.getCwPzid() + t.getBankid())) {
//                    if (c.getCategory() == 9) {
//                        t.setIsExcute(1);
//                        t.setRemark(c.getRemark());
//                        break;
//                    }
//                }
//            }
//            if (t.getIsExcute() == null) {
//                t.setIsExcute(0);
//            }
//        });
//
//        finalBankList.sort(Comparator.comparing(ThreeMergeAjDataDto::getAjName, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getTdhPzrq, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getCwPzrq, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getBankPzrq, Comparator.nullsLast(String::compareTo)));
//
//        List<ThreeMergeAjDataDto> resultList = finalBankList;
//        if (isMerge > -1) {
//            if (isMerge.equals(2)) {
//                resultList = resultList.stream().filter(t -> t.getIsMerge().equals(isMerge)).collect(Collectors.toList());
//            } else {
//                resultList = resultList.stream().filter(t -> t.getIsMerge().compareTo(isMerge) <= 0).collect(Collectors.toList());
//            }
//        }
//        if (isExcute > -1) {
//            resultList = resultList.stream().filter(t -> t.getIsExcute().equals(isExcute)).collect(Collectors.toList());
//        }
//
//        int startIndex = (page - 1) * limit;
//        int endIndex = page * limit < resultList.size() ? page * limit : resultList.size();
//        List<ThreeMergeAjDataDto> pageList = resultList.subList(startIndex < endIndex ? startIndex : endIndex, endIndex);
//
//
//        PageInfo<ThreeMergeAjDataDto> pageInfo = new PageInfo(pageList);
//        pageInfo.setTotal(resultList.size());
//        return PageResult.<ThreeMergeAjDataDto>builder().data(pageInfo.getList()).resp_code(CodeEnum.SUCCESS.getCode()).count(pageInfo.getTotal()).build();
//    }
//
//    @Override
//    public PageResult<ThreeMergeAjDataDto> ajmxz_three_zc(Map<String, Object> params) {
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        Integer kjqj = Integer.parseInt(params.get("kjqj").toString());
//        Integer page = Integer.parseInt(params.get("page").toString());
//        Integer limit = Integer.parseInt(params.get("limit").toString());
//        Integer isMerge = params.containsKey("isMerge") ? Integer.parseInt(params.get("isMerge").toString()) : -1;
//        String cbrr = params.containsKey("cbrr") ? params.get("cbrr").toString() : "";
//        Integer isExcute = params.containsKey("excuteStatus") ? Integer.parseInt(params.get("excuteStatus").toString()) : -1;
//
//        // String pzrqStart = kjnd + "-01-01"; //年初还是月初？
//        String pzrqStart = DateUtil.getFirstDayOfMonth(kjnd, kjqj);
//        String pzrqEnd = DateUtil.getLastDayOfMonth(kjnd, kjqj);
//
//        params.put("pzrqStart", pzrqStart);
//        params.put("pzrqEnd", pzrqEnd);
//
//        params.put("jyrqStart", pzrqStart.replaceAll("-", ""));
//        params.put("jyrqEnd", pzrqEnd.replaceAll("-", ""));
//
//        //params.remove("ajName"); //TODO 要不要查多个？
//
//        List<ThreeMergeAjDataDto> finalTdhList = new ArrayList<>();
//        List<ThreeMergeAjDataDto> finalPzList = new ArrayList<>();
//        List<ThreeMergeAjDataDto> finalBankList = new ArrayList<>();
//        List<ThreemergeRecord> mergeRecordList = new ArrayList<>();
//        List<ThreemergeConfirm> confirmList = new ArrayList<>();
//
//        if (StringUtil.isNotEmpty(cbrr)) {
//            List<BaseAjJbfg> cbrrList = jbfgService.findByCbrr(cbrr);
//            Assert.isTrue(CollectionUtils.isNotEmpty(cbrrList), "该经办法官没有查询到数据");
//        }
//
//        CompletableFuture<Boolean> tdhFuture = CompletableFuture.supplyAsync(() -> finalTdhList.addAll(threemergeReportDao.findTdhList(params).stream().filter(a -> a.getTdhZc().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList())));
//        CompletableFuture<Boolean> pzFuture = CompletableFuture.supplyAsync(() -> finalPzList.addAll(threemergeReportDao.findPzList(params).stream().filter(a -> a.getCwZc().compareTo(BigDecimal.ZERO) != 0).collect(Collectors.toList())));
//
//        CompletableFuture<Boolean> bankTure = CompletableFuture.supplyAsync(() -> finalBankList.addAll(threemergeReportDao.findBankList(params).stream().filter(a -> a.getBankZc().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList())));
//
//        CompletableFuture<Boolean> mergeRecordTure = CompletableFuture.supplyAsync(() -> mergeRecordList.addAll(threemergeRecordDao.findAll(params)));
//        CompletableFuture<Boolean> confirmTure = CompletableFuture.supplyAsync(() -> confirmList.addAll(confirmService.findAll(params)));
//
//        CompletableFuture.allOf(tdhFuture, pzFuture, bankTure, mergeRecordTure, confirmTure).join();
//
//        //补充已经匹配，但是银行的记录的案号不标准导致查不出来的问题
//        finalTdhList.forEach(t -> {
//            Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getLsh().equals(t.getTdhLsh())).findFirst();
//            if (mergeRecord.isPresent()) {
//                ThreeMergeAjDataDto newItem;
//                Optional<ThreeMergeAjDataDto> first = finalBankList.stream().filter(p -> p.getBankid().equals(mergeRecord.get().getBankid())).findFirst();
//                if (first.isPresent()) {
//
//                } else {
//                    BankDayreportDetail bankDayreportDetail = bankDayreportService.findById(mergeRecord.get().getBankid());
//                    newItem = new ThreeMergeAjDataDto();
//                    newItem.setAjName(t.getAjName());
//                    newItem.setDescription(bankDayreportDetail.getDescription());
//                    newItem.setBankid(bankDayreportDetail.getId());
//                    newItem.setBankZc(bankDayreportDetail.getDealMoney());
//                    newItem.setBankSr(BigDecimal.ZERO);
//                    newItem.setBankPzrq(bankDayreportDetail.getJyrq());
//                    finalBankList.add(newItem);
//                }
//            }
//        });
//
//        finalTdhList.forEach(t -> {
//            int merge = 0;
//            Optional<ThreeMergeAjDataDto> pz = finalPzList.stream().filter(p -> p.getCwFlag() == null && StringUtil.isNotEmpty(p.getAjName()) && p.getAjName().equals(t.getAjName()) && p.getCwZc() != null && p.getCwZc().compareTo(t.getTdhZc()) == 0).findFirst();
//            if (pz.isPresent()) {
//                t.setCwPzid(pz.get().getCwPzid());
//                t.setCwPzrq(pz.get().getCwPzrq());
//                t.setCwSr(pz.get().getCwSr());
//                t.setCwZc(pz.get().getCwZc());
//                pz.get().setCwFlag(1);
//                merge++;
//            }
//            //银行记录和通达海记录匹配过，这里处理非税手工勾销的场景
//            Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getLsh().equals(t.getTdhLsh())).findFirst();
//            if (mergeRecord.isPresent()) {
//                merge++;
//                Optional<ThreeMergeAjDataDto> bank = finalBankList.stream().filter(p -> p.getBankid().equals(mergeRecord.get().getBankid())).findFirst();
//                if (bank.isPresent()) {
//                    t.setBankid(bank.get().getBankid());
//                    t.setBankPzrq(bank.get().getBankPzrq());
//                    t.setBankSr(bank.get().getBankSr());
//                    t.setBankZc(bank.get().getBankZc());
//                    bank.get().setBankFlag(1);
//                    if (mergeRecord.get().getStatus() != null && mergeRecord.get().getStatus().equals(2)) {
//                        t.setIsExcute(1);
//                        t.setRemark(mergeRecord.get().getRemark());
//                    }
//                }
//            } else {
//                Optional<ThreeMergeAjDataDto> bank = finalBankList.stream().filter(p -> p.getBankFlag() == null && p.getDescription().equals(t.getAjName()) && p.getJkr().equals(t.getJkr()) && p.getKhzh().equals(t.getKhzh()) && p.getBankZc().compareTo(t.getTdhZc()) == 0).findFirst();
//                if (bank.isPresent()) {
//                    t.setBankid(bank.get().getBankid());
//                    t.setBankPzrq(bank.get().getBankPzrq());
//                    t.setBankSr(bank.get().getBankSr());
//                    t.setBankZc(bank.get().getBankZc());
//                    bank.get().setBankFlag(1);
//                    merge++;
//                }
//            }
//            t.setIsMerge(merge);
//        });
//        //补充凭证额外记录
//        finalPzList.stream().filter(a -> a.getCwFlag() == null).forEach(t -> {
//            int merge = 0;
//            Optional<ThreeMergeAjDataDto> bank = finalBankList.stream().filter(p -> p.getAjName().equals(t.getAjName()) && p.getBankZc().compareTo(t.getCwZc()) == 0).findFirst();
//            if (bank.isPresent()) {
//                t.setBankid(bank.get().getBankid());
//                t.setBankPzrq(bank.get().getBankPzrq());
//                t.setBankSr(bank.get().getBankSr());
//                t.setBankZc(bank.get().getBankZc());
//                bank.get().setBankFlag(1);
//                merge++;
//            }
////            else {
////                //银行记录和通达海记录匹配过，这里处理非税手工勾销的场景
////                Optional<ThreemergeRecord> mergeRecord = mergeRecordList.stream().filter(p -> p.getLsh().equals(t.getTdhLsh())).findFirst();
////                if (mergeRecord.isPresent()) {
////                    merge++;
////                }
////            }
//            t.setIsMerge(merge);
//            finalTdhList.add(t);
//        });
//
//        //补充银行额外记录
//        finalBankList.stream().filter(a -> a.getBankFlag() == null).forEach(t -> {
//            // t.setAjName(ajName);
//            t.setIsMerge(0);
//            finalTdhList.add(t);
//        });
//
//        finalTdhList.forEach(t -> {
//            for (ThreemergeConfirm c : confirmList) {
//
//                if ((c.getAjName() + c.getTdhLsh() + c.getCwPzid() + c.getBankid()).equals(t.getAjName() + t.getTdhLsh() + t.getCwPzid() + t.getBankid())) {
//                    if (c.getCategory() == 9) {
//                        t.setIsExcute(1);
//                        t.setRemark(c.getRemark());
//                        break;
//                    }
//                }
//            }
//            if (t.getIsExcute() == null) {
//                t.setIsExcute(0);
//            }
//        });
//
//
//        finalTdhList.sort(Comparator.comparing(ThreeMergeAjDataDto::getAjName, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getTdhPzrq, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getCwPzrq, Comparator.nullsLast(String::compareTo))
//                .thenComparing(ThreeMergeAjDataDto::getBankPzrq, Comparator.nullsLast(String::compareTo)));
//
//        List<ThreeMergeAjDataDto> resultList = finalTdhList;
//        if (isMerge > -1) {
//            if (isMerge.equals(2)) {
//                resultList = resultList.stream().filter(t -> t.getIsMerge().equals(isMerge)).collect(Collectors.toList());
//            } else {
//                resultList = resultList.stream().filter(t -> t.getIsMerge().compareTo(isMerge) <= 0).collect(Collectors.toList());
//            }
//        }
//        if (isExcute > -1) {
//            resultList = resultList.stream().filter(t -> t.getIsExcute().equals(isExcute)).collect(Collectors.toList());
//        }
//
//        int startIndex = (page - 1) * limit;
//        int endIndex = page * limit < resultList.size() ? page * limit : resultList.size();
//        List<ThreeMergeAjDataDto> pageList = resultList.subList(startIndex < endIndex ? startIndex : endIndex, endIndex);
//
//        PageInfo<ThreeMergeAjDataDto> pageInfo = new PageInfo(pageList);
//        pageInfo.setTotal(resultList.size());
//        return PageResult.<ThreeMergeAjDataDto>builder().data(pageInfo.getList()).resp_code(CodeEnum.SUCCESS.getCode()).count(pageInfo.getTotal()).build();
//    }
//
//    /**
//     * 月份统计表
//     *
//     * @param params
//     * @return
//     */
//    @Override
//    public List<KjCnMergeDto> monthReport(Map<String, Object> params) {
//        List<KjCnMergeDto> result = new ArrayList<>();
//        String companyId = params.get("companyId").toString();
//        String ztId = params.get("ztId").toString();
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        Integer kjqj = Integer.parseInt(params.get("kjqj").toString());
//
//        //会计月份统计表
//        List<KjCnMergeDto> kjList = reportDao.monthReport(params);
//
//        //出纳月份统计表
//        List<KjCnMergeDto> cnList = cnpzReportDao.monthReport(params);
//
//        for (KjCnMergeDto item : kjList) {
//            item.setYe1(item.getQcye1().add(item.getJfs1()).subtract(item.getDfs1()));
//            BaseKjkm kjkm = kjkmService.findByCode(companyId, ztId, kjnd, item.getKjkmCode());
//            if (kjkm != null) {
//                item.setKjkmName(kjkm.getName());
//            }
//            result.add(item);
//        }
//        for (KjCnMergeDto item : cnList) {
//            item.setYe2(item.getQcye2().add(item.getJfs2()).subtract(item.getDfs2()));
//            if (result.stream().map(KjCnMergeDto::getKjkmCode).collect(Collectors.toList()).contains(item.getKjkmCode())) {
//                KjCnMergeDto model = result.stream().filter(t -> t.getKjkmCode().equals(item.getKjkmCode())).findFirst().get();
//                model.setJfs2(item.getJfs2());
//                model.setDfs2(item.getDfs2());
//                model.setYe2(item.getYe2());
//
//                model.setJfs(model.getJfs1().subtract(model.getJfs2()));
//                model.setDfs(model.getDfs1().subtract(model.getDfs2()));
//                model.setYe(model.getYe1().subtract(model.getYe2()));
//            } else {
//                result.add(item);
//            }
//        }
//        return result;
//    }
//
//    @Override
//    public List<ThreeMergeAjDataDto> monthReport_three(Map<String, Object> params) {
//        Integer kjnd = Integer.parseInt(params.get("kjnd").toString());
//        String kjqj = params.containsKey("kjqj") ? params.get("kjqj").toString() : "";
//        String showCategory = params.containsKey("showCategory") ? params.get("showCategory").toString() : "1";
//        if (params.containsKey("kjqj") && StringUtil.isNotEmpty(params.get("kjqj").toString())) {
//            String pzrqStart = DateUtil.getFirstDayOfMonth(kjnd, Integer.parseInt(kjqj));
//            String pzrqEnd = DateUtil.getLastDayOfMonth(kjnd, Integer.parseInt(kjqj));
//
//            params.put("pzrqStart", DateUtil.getFirstDayOfMonth(kjnd, 1));
//            params.put("pzrqEnd", pzrqEnd);
//            params.put("jyrqStart", pzrqStart.replaceAll("-", ""));
//            params.put("jyrqEnd", pzrqEnd.replaceAll("-", ""));
//        } else {
//            String pzrqStart = DateUtil.getFirstDayOfMonth(kjnd, 1);
//            String pzrqEnd = DateUtil.getLastDayOfMonth(kjnd, 12);
//
//            params.put("pzrqStart", pzrqStart);
//            params.put("pzrqEnd", pzrqEnd);
//            params.put("jyrqStart", pzrqStart.replaceAll("-", ""));
//            params.put("jyrqEnd", pzrqEnd.replaceAll("-", ""));
//        }
//        params.remove("kjqj");
//
//        //通达海
//        List<ThreeTdhAjhzb> tdhList = tdhAjhzbService.findByNy(kjnd.toString(), StringUtil.isEmpty(kjqj) ? null : (kjnd + "" + kjqj));
//        //会计
//        List<ThreeMergeAjDataDto> pzList = pzService.findMonthList(params);
//        //出纳
//        List<ThreeMergeAjDataDto> cnList = cnService.findMonthList(params);
//        //银行
//        List<ThreeMergeAjDataDto> bankList = bankDayreportService.findMonthList(params);
//
//        List<ThreeMergeAjDataDto> result = new ArrayList<>();
//        ThreeMergeAjDataDto item;
//        BigDecimal cwNcye = BigDecimal.ZERO;
//        BigDecimal cwJlj = BigDecimal.ZERO, cwDlj = BigDecimal.ZERO;
//
//        BigDecimal cnNcye = BigDecimal.ZERO;
//        BigDecimal cnJlj = BigDecimal.ZERO, cnDlj = BigDecimal.ZERO;
//
//        int totalMonth = 12;
//        if (kjnd == DateUtil.getYear()) {
//            totalMonth = DateUtil.getMonth();
//        }
//        int startMonth = 1;
//        if (StringUtil.isNotEmpty(kjqj)) {
//            startMonth = Integer.parseInt(kjqj);
//            totalMonth = Integer.parseInt(kjqj);
//        }
//        for (int i = startMonth; i <= totalMonth; i++) {
//            int finalI = i;
//            item = new ThreeMergeAjDataDto();
//            item.setKjnd(kjnd);
//            item.setKjqj(i);
//            Optional<ThreeTdhAjhzb> tdh = tdhList.stream().filter(t -> t.getNy().substring(0, 4).equals(kjnd.toString()) && Integer.parseInt(t.getNy().substring(4, 6)) == finalI).findFirst();
//            if (tdh.isPresent()) {
//                item.setTdhSr(tdh.get().getSrje());
//                item.setTdhZc(tdh.get().getZcje());
//                item.setTdhYe(tdh.get().getYmye());
//            }
//
//            int _index = i;
//            if (StringUtil.isNotEmpty(kjqj)) {
//                _index = 1;
//            }
//
//            for (int x = _index; x <= i; x++) {
//                int finalX = x;
//                Optional<ThreeMergeAjDataDto> cw = pzList.stream().filter(t -> t.getKjnd().equals(kjnd) && t.getKjqj().equals(finalX)).findFirst();
//                if (cw.isPresent()) {
//                    cwNcye = cwNcye.add(cw.get().getCwQc());
//                    cwJlj = cwJlj.add(cw.get().getCwSr());
//                    cwDlj = cwDlj.add(cw.get().getCwZc());
//
//                    if (cw.isPresent() && cw.get().getKjqj().equals(finalI)) {
//                        item.setCwSr(cw.get().getCwSr());
//                        item.setCwZc(cw.get().getCwZc());
//                        item.setCwYe(cwNcye.add(cwJlj).subtract(cwDlj));
//                    }
//                }
//
//                Optional<ThreeMergeAjDataDto> cn = cnList.stream().filter(t -> t.getKjnd().equals(kjnd) && t.getKjqj().equals(finalX)).findFirst();
//                if (cn.isPresent()) {
//                    cnNcye = cnNcye.add(cn.get().getCnQc());
//                    cnJlj = cnJlj.add(cn.get().getCnSr());
//                    cnDlj = cnDlj.add(cn.get().getCnZc());
//
//                    if (cw.isPresent() && cw.get().getKjqj().equals(finalI)) {
//                        item.setCnSr(cn.get().getCnSr());
//                        item.setCnZc(cn.get().getCnZc());
//                        item.setCnYe(cnNcye.add(cnJlj).subtract(cnDlj));
//                    }
//                }
//            }
//
//
//            Optional<ThreeMergeAjDataDto> bank = bankList.stream().filter(t -> t.getKjnd().equals(kjnd) && t.getKjqj().equals(finalI)).findFirst();
//            if (bank.isPresent()) {
//                item.setBankSr(bank.get().getBankSr());
//                item.setBankZc(bank.get().getBankZc());
//                item.setBankYe(bank.get().getBankYe());
//            }
//
//            result.add(item);
//        }
//
//        List<ThreeMergeAjDataDto> resultCombine = new ArrayList<>();
//        if (showCategory.equals("2")) {
//            ThreeMergeAjDataDto temp;
//            for (ThreeMergeAjDataDto c : result) {
//                temp = new ThreeMergeAjDataDto();
//                temp.setKjnd(c.getKjnd());
//                temp.setKjqj(c.getKjqj());
//                temp.setSystemCode("tdh");
//                temp.setSystemName("费款");
//                temp.setSr(c.getTdhSr());
//                temp.setZc(c.getTdhZc());
//                temp.setYe(c.getTdhYe());
//                resultCombine.add(temp);
//
//                temp = new ThreeMergeAjDataDto();
//                temp.setKjnd(c.getKjnd());
//                temp.setKjqj(c.getKjqj());
//                temp.setSystemCode("bank");
//                temp.setSystemName("银行");
//                temp.setSr(c.getBankSr());
//                temp.setZc(c.getBankZc());
//                temp.setYe(c.getBankYe());
//                resultCombine.add(temp);
//
//                temp = new ThreeMergeAjDataDto();
//                temp.setKjnd(c.getKjnd());
//                temp.setKjqj(c.getKjqj());
//                temp.setSystemCode("cn");
//                temp.setSystemName("出纳");
//                temp.setSr(c.getCnSr());
//                temp.setZc(c.getCnZc());
//                temp.setYe(c.getCnYe());
//                resultCombine.add(temp);
//
//                temp = new ThreeMergeAjDataDto();
//                temp.setKjnd(c.getKjnd());
//                temp.setKjqj(c.getKjqj());
//                temp.setSystemCode("cw");
//                temp.setSystemName("会计");
//                temp.setSr(c.getCwSr());
//                temp.setZc(c.getCwZc());
//                temp.setYe(c.getCwYe());
//                resultCombine.add(temp);
//            }
//            return resultCombine;
//        }
//        return result;
//    }
//
//    //计算余额
//    private void calcFzxYe(List<SlmxzDto> list, Integer yefx) {
//        for (int i = 0; i < list.size(); i++) {
//            if (i == 0 && list.get(i).getTag().equals(0) && list.get(i).ye == null) {
//                list.get(i).ye = BigDecimal.ZERO;
//            } else if (i == 0 && list.get(i).getTag().equals(0) && yefx == 2) {
//                list.get(i).ye = list.get(i).ye.negate();
//            }
//            if (i == 0 && list.get(i).getTag().equals(1)) { //期初余额
//                list.get(i).ye = (BigDecimalUtil.getData(list.get(i).ye)).add(BigDecimalUtil.getData(list.get(i).d)).subtract(BigDecimalUtil.getData(list.get(i).j));
//                list.get(i).j = BigDecimal.ZERO;
//                list.get(i).d = BigDecimal.ZERO;
//            } else if (i > 0 && list.get(i).getTag().equals(2)) {
//                if (yefx == 2) {
//                    list.get(i).ye = (BigDecimalUtil.getData(list.get(i - 1).ye)).add(BigDecimalUtil.getData(list.get(i).d)).subtract(BigDecimalUtil.getData(list.get(i).j));
//                } else {
//                    list.get(i).ye = (BigDecimalUtil.getData(list.get(i - 1).ye)).add(BigDecimalUtil.getData(list.get(i).j)).subtract(BigDecimalUtil.getData(list.get(i).d));
//                }
//            } else if (i == 0 && list.get(i).getTag().equals(2)) {
//                if (yefx == 2) {
//                    list.get(i).ye = BigDecimalUtil.getData(list.get(i).d).subtract(BigDecimalUtil.getData(list.get(i).j));
//                } else {
//                    list.get(i).ye = BigDecimalUtil.getData(list.get(i).j).subtract(BigDecimalUtil.getData(list.get(i).d));
//                }
//            } else if (i > 0) {
//                list.get(i).ye = BigDecimalUtil.getData(list.get(i - 1).ye);
//            }
//            list.get(i).yefx = BigDecimalUtil.getData(list.get(i).ye).compareTo(BigDecimal.ZERO) == 0 ? 0 : yefx;
//        }
//
//        for (int i = 0; i < list.size(); i++) {
//            if (BigDecimalUtil.getData(list.get(i).ye).compareTo(BigDecimal.ZERO) < 0) {
//                list.get(i).ye = list.get(i).ye.abs();
//                list.get(i).yefx = (3 - list.get(i).yefx);
//            }
//            if (list.get(i).getTag().equals(1)) {
//                if (list.get(i).getJ() == null) {
//                    list.get(i).j = BigDecimal.ZERO;
//                }
//                if (list.get(i).getD() == null) {
//                    list.get(i).d = BigDecimal.ZERO;
//                }
//            }
//        }
//    }
//}
